﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using MotoGame;

namespace MotoGame.Estados.Jogo
{
    public enum Jogador { JOGADOR1, JOGADOR2 };

    class Jogo:EstadoBase
    {

        //moto
        Moto[] motos;

        public Jogo(ContentManager Content)
            :base(Content)
        {

            //Cria instancia da moto
            motos = new Moto[2];
            motos[0] = new Moto(Content, Game1.WindowRef,new Vector2(200, 300),Jogador.JOGADOR1 );
            motos[1] = new Moto(Content, Game1.WindowRef,new Vector2(400, 300),Jogador.JOGADOR2 );

        }

        public override void Update(GameTime gameTime)
        {
            foreach (var moto in motos)
            {
                moto.Update(gameTime);
            }
            
            int qtdRemovida =0;
            for (int i = 0; i  <motos.Length ;i++ )
            {
                for (int j = 0; j < motos.Length; j++)
                {
                    if (i != j && !motos[j].Remover && !motos[i].Remover && motos[i].Colisao.Intersects(motos[j].Colisao)) 
                    {
                        motos[i].Remover = true;
                        qtdRemovida++;
                    }
                }
             } 
            if (qtdRemovida>0) 
            {
                Moto[] tmp = new Moto[motos.Length-qtdRemovida];
                int j = 0;
                for (int i = 0; i < motos.Length; i++)
                {
                    if (!motos[i].Remover)
                    {
                        tmp[j] = motos[i];
                        j++;
                    }
                }
                motos = tmp;
            }


            
        }

        public override void Draw(GameTime gameTime, SpriteBatch spriteBatch)
        {
            foreach (var moto in motos)
            {
                moto.Draw(gameTime, spriteBatch);
            }
        }

    }
}
